home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / prolog / prologsh / sysfile.toy < prev   
Encoding:
Text File  |  1994-09-22  |  36.1 KB  |  1,435 lines

  1.  
  2.  
  3. % KERNEL file for TOY Prolog
  4. %            
  5. % (c) Kluzniak/Szpakowicz 1985
  6. %
  7. % TOY Prolog ST Version (c) Jens Kilian 1986
  8.  
  9. % standard atoms :
  10.  
  11. ';'/2    ','/2    'call'/1    'tag'/1
  12. '[]'/0   '.'/2    'error'/1   'user'/0
  13. 'xfx'/0  'xfy'/0  'yfx'/0     'yfy'/0  % operator types
  14. 'fx'/0   'fy'/0   'xf'/0      'yf'/0   %    "       "
  15. 'ear'/0
  16.  
  17. % atoms identifying system routines (keep 'fail' first and 'true' last)
  18.  
  19.    'fail'/0       'tag'/1        'call'/1       '!'/0
  20.    'tagcut'/1     'tagfail'/1    'tagexit'/1    'ancestor'/1
  21.    'halt'/1       'status'/0
  22.    'display'/1    'rch'/0        'lastch'/1     'skipbl'/0     'wch'/1
  23.    'echo'/0       'noecho'/0
  24.    'see'/1        'seeing'/1     'seen'/0       'tell'/1       'telling'/1
  25.    'told'/0
  26.    'ordchr'/2     'sum'/3        'prod'/4       'less'/2       '@<'/2
  27.    'smalletter'/1 'bigletter'/1  'letter'/1     'digit'/1      'alphanum'/1
  28.    'bracket'/1    'solochar'/1   'symch'/1
  29.    'eqvar'/2      'var'/1
  30.    'atom'/1       'integer'/1    'nonvarint'/1
  31.    'functor'/3    'arg'/3        'pname'/2      'pnamei'/2
  32.    '$proc'/1      '$proclimit'/0 '$procinit'/0
  33.    'clause'/5     'retract'/3    'abolish'/2    'assert'/3     'redefine'/0
  34.    'predefined'/2 'protect'/2    'unprotect'/2
  35.    'spy'/2        'nospy'/2      'spied'/2
  36.    'nonexistent'/0 'nononexistent'/0
  37.    'debug'/0      'nodebug'/0
  38.    'op'/3         'FF'/3         'delop'/1
  39.    'grf_clip'/5   'grf_pline'/1  'grf_pmarker'/1 'grf_text'/3  'grf_poly'/1
  40.    'grf_fill'/3   'grf_box'/4    'grf_bar'/4    'grf_arc'/5    'grf_pie'/5
  41.    'grf_circle'/3 'grf_ellipse'/4 'grf_rbox'/4  'grf_rfbox'/4  'grf_wrmode'/1
  42.    'grf_colour'/4
  43.    'grf_l_colour'/1  'grf_l_type'/1 'grf_l_udstyle'/1 'grf_l_width'/1
  44.    'grf_l_ends'/2
  45.    'grf_m_colour'/1  'grf_m_type'/1 'grf_m_height'/1
  46.    'grf_t_height'/1  'grf_t_point'/1   'grf_t_rotation'/1   'grf_t_colour'/1
  47.    'grf_t_effects'/1 'grf_t_align'/2
  48.    'grf_f_colour'/1  'grf_f_type'/1 'grf_f_style'/1   'grf_f_perim'/1
  49.    'grf_f_udpat'/1
  50.    'grf_mse_form'/5  'grf_mse_form'/1 'grf_mse_show'/1 'grf_mse_hide'/0
  51.    'grf_mse_state'/3
  52.    'grf_mode'/0      'txt_mode'/0   'alert'/3
  53.    'date'/3       'set_date'/3   'time'/3       'set_time'/3
  54.    'interrupt'/0  'disk_dir'/1   'disk_search'/4 'disk_search'/2
  55.    'set_fstring'/2
  56.    'true'/0
  57.  
  58. % kernel library : error handler
  59.  
  60. error(:0) : functor(:0, :1, :2) . predefined(:1, :2) . ! .
  61.             nl . display(' +++ System call error : ') . display(:0) .
  62.             nl . bell . fail . []
  63. error(:0) : nl . display(' +++ ERROR : ') . display(:0) . nl . bell . fail . []
  64.  
  65. % special character output routines
  66.  
  67. :ordchr(13, :0) . assert(iseoln(:0), [], 0) . assert(nl, wch(:0).[], 0) . [] #
  68.  
  69. :ordchr(27, :0) . assert(escape, wch(:0).[], 0) .
  70.                   assert(cls, escape.wch('E').[], 0) . [] #
  71.  
  72. :ordchr(7, :0) . assert(bell, wch(:0).[], 0) . [] #
  73.  
  74. % predefined predicates
  75.  
  76. '='(:0, :0) : []
  77.  
  78. ','(:0, :1) : call(:0) . call(:1) . []
  79.  
  80. ';'(:0, _) : call(:0) . []
  81. ';'(_, :0) : call(:0) . []
  82.  
  83. not(:0) : call(:0) . ! . fail . []
  84. not(_) : []
  85.  
  86. check(:0) : not(not(:0)) . []
  87.  
  88. 'side_effects'(:0) : not(not(:0)) . []
  89.  
  90. once(:0) : call(:0) . ! . []
  91.  
  92. '@=<'(:0, :1) : '@<'(:1, :0) . ! . fail . []
  93. '@=<'(_, _) : []
  94.  
  95. '@>'(:0, :1) : '@<'(:1, :0) . []
  96.  
  97. '@>='(:0, :1) : '@=<'(:1, :0) . []
  98.  
  99. % - - - - - - - - - basic input procedures - - - - - - - - - -
  100.  
  101. rdchsk(:0) : rch . skipbl . lastch(:0) . []
  102.  
  103. rdch(:0) : rch . lastch(:1) . sch(:1, :0) . []
  104.  
  105. % convert nonprintable characters to blanks
  106. sch(:0, :0) : '@<'(' ', :0) . ! . []
  107. sch(:0, ' ') : []
  108.  
  109. repeat : []
  110. repeat : repeat . []
  111.  
  112. member(:0, :0.:1) : []
  113. member(:0, _.:1) : member(:0, :1) . []
  114.  
  115. proc(:0) : '$procinit' . '$pr'(:0) . []
  116. '$pr'(:0) : '$proclimit' . ! . fail . []
  117. '$pr'(:0) : '$proc'(:0) . []
  118. '$pr'(:0) : '$pr'(:0) . []
  119.  
  120. %   b a g o f   (preserves order of solutions)
  121.  
  122. bagof(:0, :1, _) : asserta('BAG'('BAG')) . call(:1) .
  123.          asserta('BAG'(:0)) . fail . []
  124. bagof(_, _, :0) : 'BAG'(:1) . ! . intobag(:1, [], :0) . []
  125.  
  126. intobag('BAG', :0, :0) : ! . retract('BAG', 1, 1) . []
  127. intobag(:0, :1, :2) : retract('BAG', 1, 1) . 'BAG'(:3) . ! .
  128.          intobag(:3, :0.:1, :2) . []
  129.  
  130. % display copyright message :
  131.  
  132. :  grf_mse_hide . grf_f_type(0) . grf_rfbox(152, 136, 487, 263) .
  133.    grf_t_align(0, 5) .
  134.    grf_text(272, 152, 'TOY Prolog ST') .
  135.    grf_text(160, 184, 'TOY Prolog (c) 1983  Kluzniak/Szpakowicz') .
  136.    grf_text(272, 200, 'IIUW Warszawa') .
  137.    grf_text(168, 232, 'ATARI ST version (c) 1986  Jens Kilian') .
  138.    grf_mse_show(0) . grf_mse_form(255) . [] #
  139.  
  140. % preset user-defined function key strings
  141.  
  142. :  set_fstring(0, ':-') . [] #
  143. :  set_fstring(1, '-->') . [] #
  144. :  set_fstring(2, '=:=') . [] #
  145. :  set_fstring(3, '=\\=') . [] #
  146. :  set_fstring(4, '==') . [] #
  147. :  set_fstring(5, '\\==') . [] #
  148. :  set_fstring(6, '=..') . [] #
  149. :  set_fstring(7, 'not') . [] #
  150. :  set_fstring(8, 'is') . [] #
  151. :  set_fstring(9, 'mod') . [] #
  152. :  set_fstring(10, '=<') . [] #
  153. :  set_fstring(11, '>=') . [] #
  154. :  set_fstring(12, '@<') . [] #
  155. :  set_fstring(13, '@>') . [] #
  156. :  set_fstring(14, '@=<') . [] #
  157. :  set_fstring(15, '@>=') . [] #
  158. :  set_fstring(16, ':-sysload(''editor.toy'').\M') . [] #
  159. :  set_fstring(17, ':-sysload(''calltree.toy'').\M') . [] #
  160. :  set_fstring(19, 'see(''start'').\M') . [] #
  161. :  set_fstring(20, ':-cls.\M') . [] #
  162. :  set_fstring(25, ':-assert(') . [] #
  163. :  set_fstring(26, ':-retract(') . [] #
  164. :  set_fstring(27, ':-status.\M') . [] #
  165.  
  166. %%%%%%%%%%%%%%%% THE FOLLOWING CODE COMPRISES THE MONITOR %%%%%%%%%%%%%%%%%%
  167.  
  168. % Comments had to be sacrificed for disk space - sorry !!!
  169.  
  170. 'ear' :
  171.    'see'('start').
  172.    'nl' .
  173.    'display'('TOY Prolog listening:') .
  174.    'nl' .
  175.    'tag'('loop') . []
  176. 'ear' :
  177.    'grf_mode' .
  178.    'grf_mse_show'(0).  
  179.    'halt'('TOY Prolog --- end of session.') . []
  180. 'loop' :
  181.    'repeat' .
  182.    'display'('?-') .
  183.    'read'(:0, :1) .
  184.    'exec'(:0, :1) .
  185.    'fail' . []
  186. 'stop' :
  187.    'tagfail'('loop') . []
  188. 'sysload'(:0) :
  189.    'see'(:0) .
  190.    'tagexit'('loop') . []
  191. 'exec'('e r r', _) :
  192.    '!' . []
  193. 'exec'(':-'(:0), _) :
  194.    '!' .
  195.    'once'(:0) . []
  196. 'exec'(:0, _) :
  197.    'integer'(:0) .
  198.    '!' .
  199.    'num_clause' . []
  200. 'exec'(':-'(:0, :1), _) :
  201.    '!' .
  202.    'assimilate'(':-'(:0, :1)) .
  203.    'display'('ok') .
  204.    'nl' . []
  205. 'exec'('-->'(:0, :1), _) :
  206.    '!' .
  207.    'assimilate'('-->'(:0, :1)) .
  208.    'display'('ok') .
  209.    'nl' . []
  210. 'exec'(:0.:1, _) :
  211.    '!' .
  212.    'consultall'(:0.:1) . []
  213. 'exec'(:0, :1) :
  214.    'call'(:0) .
  215.    'numbervars'(:0, 0, _) .
  216.    'printvars'(:1) .
  217.    'enough'(:1) .
  218.    '!' . []
  219. 'exec'(_, _) :
  220.    'display'('no') .
  221.    'nl' . []
  222. 'enough'(:0) :
  223.    'var'(:0) .
  224.    '!' . []
  225. 'enough'(_) :
  226.    'rch' .
  227.    'skipbl' .
  228.    'lastch'(:0) .
  229.    'rch' .
  230.    'not'('='(:0, ';')) . []
  231. 'printvars'(:0) :
  232.    'var'(:0) .
  233.    'display'('yes') .
  234.    'nl' .
  235.    '!' . []
  236. 'printvars'(:0) :
  237.    'prvars'(:0) . []
  238. 'prvars'(:0) :
  239.    'var'(:0) .
  240.    '!' . []
  241. 'prvars'('var'(:0, :1).:2) :
  242.    'nl' .
  243.    'writetext'(:0) .
  244.    'display'(' = ') .
  245.    'side_effects'('outt'(:1, 'fd'(_, _), 'q')) .
  246.    'wch'(' ') .
  247.    'prvars'(:2) . []
  248. 'num_clause' :
  249.    'display'('A number can''t be a clause.') .
  250.    'nl' . []
  251. 'consultall'([]) :
  252.    '!' . []
  253. 'consultall'('-'(:0).:1) :
  254.    '!' .
  255.    'reconsult'(:0) .
  256.    'consultall'(:1) . []
  257. 'consultall'(:0.:1) :
  258.    '!' .
  259.    'consult'(:0) .
  260.    'consultall'(:1) . []
  261. 'consult'(:0) :
  262.    'seeing'(:1) .
  263.    'readprog'(:0) .
  264.    'see'(:1) . []
  265. 'reconsult'(:0) :
  266.    'redefine' .
  267.    'seeing'(:1) .
  268.    'readprog'(:0) .
  269.    'see'(:1) .
  270.    'redefine' . []
  271. 'readprog'('user') :
  272.    '!' .
  273.    'getprog' . []
  274. 'readprog'(:0) :
  275.    'see'(:0) .
  276.    'echo' .
  277.    'getprog' .
  278.    'noecho' .
  279.    'seen' . []
  280. 'getprog' :
  281.    'repeat' .
  282.    'read'(:0) .
  283.    'assimilate'(:0) .
  284.    '='(:0, 'end') .
  285.    '!' . []
  286. 'assimilate'('e r r') :
  287.    '!' . []
  288. 'assimilate'('-->'(:0, :1)) :
  289.    '!' .
  290.    'tag'('transl_rule'(:0, :1, :2)) .
  291.    'assertz'(:2) . []
  292. 'assimilate'(':-'(:0)) :
  293.    '!' .
  294.    'once'(:0) . []
  295. 'assimilate'('end') :
  296.    'nl' .
  297.    '!' . []
  298. 'assimilate'(:0) :
  299.    'integer'(:0) .
  300.    '!' .
  301.    'num_clause' . []
  302. 'assimilate'(:0) :
  303.    'assertz'(:0) . []
  304. 'read'(:0) :
  305.    'read'(:0, :1) . []
  306. 'read'(:0, :1) :
  307.    'gettr'(:2, :1) .
  308.    '!' .
  309.    'maketerm'(:2, :0) . []
  310. 'read'('e r r', _) :
  311.    'nl' .
  312.    'display'('+++ Bad term on input. Text skipped: ') .
  313.    'skip' .
  314.    'nl' . []
  315. 'skip' :
  316.    'lastch'(:0) .
  317.    'wch'(:0) .
  318.    'skip'(:0) . []
  319. 'skip'('.') :
  320.    'rch' .
  321.    'lastch'(:0) .
  322.    'e_skip'(:0) .
  323.    '!' . []
  324. 'skip'('%') :
  325.    'skip_comment' .
  326.    '!' .
  327.    'rch' .
  328.    'skip' . []
  329. 'skip'(:0) :
  330.    'isquote'(:0) .
  331.    'skip_s'(:0) .
  332.    '!' .
  333.    'rch' .
  334.    'skip' . []
  335. 'skip'(_) :
  336.    'rch' .
  337.    'skip' . []
  338. 'e_skip'(:0) :
  339.    '@=<'(:0, ' ') . []
  340. 'e_skip'(:0) :
  341.    'wch'(:0) .
  342.    'rch' .
  343.    'skip' . []
  344. 'skip_comment' :
  345.    'repeat' .
  346.    'rch' .
  347.    'lastch'(:0) .
  348.    'wch'(:0) .
  349.    'iseoln'(:0) .
  350.    '!' . []
  351. 'isquote'('''') : []
  352. 'isquote'('"') : []
  353. 'skip_s'(:0) :
  354.    'repeat' .
  355.    'rch' .
  356.    'lastch'(:1) .
  357.    'wch'(:1) .
  358.    '='(:1, :0) .
  359.    '!' . []
  360. 'gettr'(:0, :1) :
  361.    'gettoken'(:2, :1) .
  362.    'parse'('bottom'.[], :2, :0, :1) . []
  363. 'parse'('t'(:0).'bottom'.[], 'dot', :0, _) :
  364.    '!' . []
  365. 'parse'(:0, :1, :2, :3) :
  366.    'topterminal'(:0, :4, :5) .
  367.    'establish_precedence'(:4, :1, :5, :6, :7, :8) .
  368.    'exch_top'(:4, :7, :0, :9) .
  369.    'step'(:6, :8, :9, :10, :11, :3) .
  370.    'parse'(:10, :11, :2, :3) . []
  371. 'topterminal'('t'(_).:0._, :0, 2) :
  372.    '!' . []
  373. 'topterminal'(:0._, :0, 1) : []
  374. 'exch_top'(:0, :0, :1, :1) :
  375.    '!' . []
  376. 'exch_top'(_, :0, 't'(:1)._.:2, 't'(:1).:0.:2) :
  377.    '!' . []
  378. 'exch_top'(_, :0, _.:1, :0.:1) : []
  379. 'step'('lseq', :0, :1, :0.:1, :2, :3) :
  380.    '!' .
  381.    'gettoken'(:2, :3) . []
  382. 'step'('gt', :0, :1, :2, :0, _) :
  383.    'reduce'(:1, :2) . []
  384. 'reduce'('vns'(:0).:1, 't'('arg0'(:0)).:1) : []
  385. 'reduce'('id'(:0).:1, 't'('arg0'(:0)).:1) : []
  386. 'reduce'('br'('r', '()').'t'(:0).'br'('l', '()').'id'(:1).:2, 't'('tr'(:1, :0)).:2) : []
  387. 'reduce'('br'('r', :0).'br'('l', :0).:1, 't'('arg0'(:0)).:1) :
  388.    'not'('='(:0, '()')) . []
  389. 'reduce'('br'('r', :0).'t'(:1).'br'('l', :0).:2, 't'('tr'(:0, :1)).:2) : []
  390. 'reduce'('br'('r', '[]').'t'(:0).'bar'.'t'(:1).'br'('l', '[]').:2, 't'('bar'(:1, :0)).:2) : []
  391. 'reduce'('ff'(:0, :1, _).'t'(:2).:3, 't'('tr1'(:0, :2)).:3) :
  392.    'ismpostf'(:1) . []
  393. 'reduce'('t'(:0).'ff'(:1, :2, _).'t'(:3).:4, 't'('tr2'(:1, :3, :0)).:4) :
  394.    'isminf'(:2) . []
  395. 'reduce'('t'(:0).'ff'(:1, :2, _).:3, 't'('tr1'(:1, :0)).:3) :
  396.    'ismpref'(:2) . []
  397. 'ispref'('fy') : []
  398. 'ispref'('fx') : []
  399. 'ispostf'('yf') : []
  400. 'ispostf'('xf') : []
  401. 'ismpref'(:0.[]) :
  402.    'ispref'(:0) . []
  403. 'ismpref'(_.:0.[]) :
  404.    'ispref'(:0) . []
  405. 'isminf'(:0.[]) :
  406.    'member'(:0, 'yfy'.'xfy'.'yfx'.'xfx'.[]) . []
  407. 'isminf'(_._.[]) : []
  408. 'ismpostf'(:0.[]) :
  409.    'ispostf'(:0) . []
  410. 'ismpostf'(_.:0.[]) :
  411.    'ispostf'(:0) . []
  412. 'establish_precedence'(:0, :1, :2, :3, :4, :5) :
  413.    'p'(:0, :1, :2, :6) .
  414.    'finalize'(:6, :0, :1, :3, :4, :5) .
  415.    '!' . []
  416. 'finalize'('lseq', :0, :1, 'lseq', :0, :1) : []
  417. 'finalize'('gt', :0, :1, 'gt', :0, :1) : []
  418. 'finalize'('lseq'(:0, :1), _, _, 'lseq', :0, :1) : []
  419. 'finalize'('gt'(:0, :1), _, _, 'gt', :0, :1) : []
  420. 'p'('id'(_), 'br'('l', '()'), 1, 'lseq') : []
  421. 'p'('br'('l', :0), 'br'('r', :0), _, 'lseq') : []
  422. 'p'('br'('l', '[]'), 'bar', 2, 'lseq') : []
  423. 'p'('bar', 'br'('r', '[]'), 2, 'lseq') : []
  424. 'p'(:0, :1, 1, 'gt') :
  425.    'vns_id_br'(:0, 'r') .
  426.    'br_bar'(:1, 'r') . []
  427. 'p'(:0, 'ff'(:1, :2, :3), 1, 'gt'(:0, 'ff'(:1, :4, :3))) :
  428.    'vns_id_br'(:0, 'r') .
  429.    'restrict'(:2, 'fx'.'fy'.[], :4) . []
  430. 'p'(:0, :1, 1, 'lseq') :
  431.    'br_bar'(:0, 'l') .
  432.    'vns_id_br'(:1, 'l') . []
  433. 'p'(:0, 'ff'(:1, :2, :3), :4, 'lseq'(:0, 'ff'(:1, :5, :3))) :
  434.    'br_bar'(:0, 'l') .
  435.    'pre_inpost'(:4, :2, :5) . []
  436. 'p'('ff'(:0, :1, :2), :3, :4, 'gt'('ff'(:0, :5, :2), :3)) :
  437.    'br_bar'(:3, 'r') .
  438.    'post_inpre'(:4, :1, :5) . []
  439. 'p'('ff'(:0, :1, :2), :3, 1, 'lseq'('ff'(:0, :4, :2), :3)) :
  440.    'vns_id_br'(:3, 'l') .
  441.    'restrict'(:1, 'xf'.'yf'.[], :4) . []
  442. 'p'('ff'(:0, :1, :2), 'ff'(:3, :4, :2), :5, :6) :
  443.    'res_confl'(:1, :4, :5, :7, :8, :9) .
  444.    '!' .
  445.    'do_rel'(:9, 'ff'(:0, :7, :2), 'ff'(:3, :8, :2), :6) . []
  446. 'p'('ff'(:0, :1, :2), 'ff'(:3, :4, :5), :6, 'gt'('ff'(:0, :7, :2), 'ff'(:3, :8, :5))) :
  447.    'stronger'(:2, :5) .
  448.    '!' .
  449.    'restrict'(:4, 'fx'.'fy'.[], :8) .
  450.    'post_inpre'(:6, :1, :7) . []
  451. 'p'('ff'(:0, :1, :2), 'ff'(:3, :4, :5), :6, 'lseq'('ff'(:0, :7, :2), 'ff'(:3, :8, :5))) :
  452.    'stronger'(:5, :2) .
  453.    '!' .
  454.    'restrict'(:1, 'xf'.'yf'.[], :7) .
  455.    'pre_inpost'(:6, :4, :8) . []
  456. 'p'(_, 'dot', _, 'gt') : []
  457. 'p'('bottom', _, _, 'lseq') : []
  458. 'vns_id_br'('vns'(_), _) : []
  459. 'vns_id_br'('id'(_), _) : []
  460. 'vns_id_br'('br'(:0, _), :0) : []
  461. 'br_bar'('br'(:0, _), :0) : []
  462. 'br_bar'('bar', _) : []
  463. 'stronger'(:0, :1) :
  464.    'less'(:0, :1) . []
  465. 'pre_inpost'(1, :0, :1) :
  466.    'restrict'(:0, 'xf'.'yf'.[], :2) .
  467.    'restrict'(:2, 'xfy'.'yfx'.'xfx'.[], :1) . []
  468. 'pre_inpost'(2, :0, :1) :
  469.    'restrict'(:0, 'fx'.'fy'.[], :1) . []
  470. 'post_inpre'(1, :0, :1) :
  471.    'restrict'(:0, 'fx'.'fy'.[], :2) .
  472.    'restrict'(:2, 'xfy'.'yfx'.'xfx'.[], :1) . []
  473. 'post_inpre'(2, :0, :1) :
  474.    'restrict'(:0, 'xf'.'yf'.[], :1) . []
  475. 'restrict'(:0.[], :1, :0.[]) :
  476.    '!' .
  477.    'not'('member'(:0, :1)) . []
  478. 'restrict'(:0.:1.[], :2, :0.[]) :
  479.    'member'(:1, :2) .
  480.    '!' . []
  481. 'restrict'(:0.:1.[], :2, :1.[]) :
  482.    'member'(:0, :2) .
  483.    '!' . []
  484. 'restrict'(:0, _, :0) : []
  485. 'res_confl'(:0.[], :1.[], :2, :0.[], :1.[], :3) :
  486.    '!' .
  487.    'ff_p'(:0, :1, :2, :3) . []
  488. 'res_confl'(:0.:1.[], :2.[], :3, :4, :2.[], :5) :
  489.    '!' .
  490.    'ff_p'(:0, :2, :3, :6) .
  491.    'ff_p'(:1, :2, :3, :7) .
  492.    'match_rels'(:6, :7, :5, :0, :1, :4) . []
  493. 'res_confl'(:0.[], :1.:2.[], :3, :0.[], :4, :5) :
  494.    '!' .
  495.    'ff_p'(:0, :1, :3, :6) .
  496.    'ff_p'(:0, :2, :3, :7) .
  497.    'match_rels'(:6, :7, :5, :1, :2, :4) . []
  498. 'res_confl'(:0.:1.[], :2.:3.[], :4, :5, :6, :7) :
  499.    'ff_p'(:0, :2, :4, :8) .
  500.    'ff_p'(:0, :3, :4, :9) .
  501.    'ff_p'(:1, :2, :4, :10) .
  502.    'ff_p'(:1, :3, :4, :11) .
  503.    'res_mixed'(:8, :9, :10, :11, :7, :0, :1, :2, :3, :5, :6) .
  504.    '!' . []
  505. 'do_rel'('lseq', :0, :1, 'lseq'(:0, :1)) : []
  506. 'do_rel'('gt', :0, :1, 'gt'(:0, :1)) : []
  507. 'match_rels'(:0, :0, :0, :1, :2, :1.:2.[]) :
  508.    '!' . []
  509. 'match_rels'('err', :0, :0, _, :1, :1.[]) :
  510.    '!' . []
  511. 'match_rels'(:0, 'err', :0, :1, _, :1.[]) :
  512.    '!' . []
  513. 'match_rels'(_, _, 'err', :0, :1, :0.:1.[]) : []
  514. 'res_mixed'(:0, :0, :0, :0, :0, :1, :2, :3, :4, :1.:2.[], :3.:4.[]) : []
  515. 'res_mixed'('err', 'err', :0, :1, :2, _, :3, :4, :5, :3.[], :6) :
  516.    'match_rels'(:0, :1, :2, :4, :5, :6) . []
  517. 'res_mixed'(:0, :1, 'err', 'err', :2, :3, _, :4, :5, :3.[], :6) :
  518.    'match_rels'(:0, :1, :2, :4, :5, :6) . []
  519. 'res_mixed'('err', :0, 'err', :1, :2, :3, :4, _, :5, :6, :5.[]) :
  520.    'match_rels'(:0, :1, :2, :3, :4, :6) . []
  521. 'res_mixed'(:0, 'err', :1, 'err', :2, :3, :4, :5, _, :6, :5.[]) :
  522.    'match_rels'(:0, :1, :2, :3, :4, :6) . []
  523. 'res_mixed'(_, _, _, _, 'err', _, _, _, _, _, _) : []
  524. 'ff_p'(:0, :1, :2, 'lseq') :
  525.    'member'(:0, 'xfy'.'fy'.[]) .
  526.    'ff_p_aux1'(:2, :1) .
  527.    '!' . []
  528. 'ff_p'(:0, :1, :2, 'gt') :
  529.    'member'(:1, 'yfx'.'yf'.[]) .
  530.    'ff_p_aux2'(:2, :0) .
  531.    '!' . []
  532. 'ff_p'(_, _, _, 'err') : []
  533. 'ff_p_aux1'(1, :0) :
  534.    'ispref'(:0) . []
  535. 'ff_p_aux1'(2, :0) :
  536.    'member'(:0, 'xfy'.'xf'.'xfx'.[]) . []
  537. 'ff_p_aux2'(1, :0) :
  538.    'ispostf'(:0) . []
  539. 'ff_p_aux2'(2, :0) :
  540.    'member'(:0, 'yfx'.'fx'.'xfx'.[]) . []
  541. 'maketerm'('arg0'(:0), :0) :
  542.    '!' . []
  543. 'maketerm'('tr'('()', :0), :1) :
  544.    '!' .
  545.    'maketerm'(:0, :1) . []
  546. 'maketerm'('bar'(:0, :1), :2) :
  547.    '!' .
  548.    'maketerm'(:1, :3) .
  549.    'makelist'(:0, :3, :2) . []
  550. 'maketerm'('tr'('[]', :0), :1) :
  551.    '!' .
  552.    'makelist'(:0, '[]', :1) . []
  553. 'maketerm'('tr'('{}', :0), '{}'(:1)) :
  554.    '!' .
  555.    'maketerm'(:0, :1) . []
  556. 'maketerm'('tr'(:0, :1), :2) :
  557.    '!' .
  558.    'makelist'(:1, '[]', :3) .
  559.    '=..'(:2, :0.:3) . []
  560. 'maketerm'('tr2'(:0, :1, :2), :3) :
  561.    '!' .
  562.    'maketerm'(:1, :4) .
  563.    'maketerm'(:2, :5) .
  564.    '=..'(:3, :0.:4.:5.[]) . []
  565. 'maketerm'('tr1'(:0, :1), :2) :
  566.    'maketerm'(:1, :3) .
  567.    '=..'(:2, :0.:3.[]) . []
  568. 'makelist'('tr2'(',', :0, :1), :2, :3.:4) :
  569.    '!' .
  570.    'maketerm'(:0, :3) .
  571.    'makelist'(:1, :2, :4) . []
  572. 'makelist'(:0, :1, :2.:1) :
  573.    'maketerm'(:0, :2) . []
  574. 'gettoken'(:0, :1) :
  575.    'skipbl' .
  576.    'lastch'(:2) .
  577.    'absorbtoken'(:2, :3) .
  578.    '!' .
  579.    'maketoken'(:3, :0, :1) .
  580.    '!' . []
  581. 'absorbtoken'(:0, 'id'(:0.:1)) :
  582.    'wordstart'(:0) .
  583.    'getword'(:1) . []
  584. 'absorbtoken'(:0, 'var'(:0.:1)) :
  585.    'varstart'(:0) .
  586.    'getword'(:1) . []
  587. 'absorbtoken'(:0, 'id'(:0.[])) :
  588.    'solochar'(:0) .
  589.    'rch' . []
  590. 'absorbtoken'(:0, 'br'(:1, :2)) :
  591.    'bracket'(:0) .
  592.    'bracket'(:0, :1, :2) .
  593.    'rch' . []
  594. 'absorbtoken'('|', 'bar') :
  595.    'rch' . []
  596. 'absorbtoken'('''', 'qid'(:0)) :
  597.    'rdch'(:1) .
  598.    'getstring'('''', :1, :0) . []
  599. 'absorbtoken'('"', 'str'(:0)) :
  600.    'rdch'(:1) .
  601.    'getstring'('"', :1, :0) . []
  602. 'absorbtoken'(:0, 'num'(:0.:1)) :
  603.    'digit'(:0) .
  604.    'getdigits'(:1) . []
  605. 'absorbtoken'('-', :0) :
  606.    'rdch'(:1) .
  607.    'num_or_sym'(:1, :0) . []
  608. 'absorbtoken'('.', :0) :
  609.    'rdch'(:1) .
  610.    'dot_or_sym'(:1, :0) . []
  611. 'absorbtoken'(:0, 'id'(:0.:1)) :
  612.    'symch'(:0) .
  613.    'getsym'(:1) . []
  614. 'absorbtoken'('%', :0) :
  615.    'skipcomment' .
  616.    'lastch'(:1) .
  617.    'absorbtoken'(:1, :0) . []
  618. 'absorbtoken'(:0, _) :
  619.    'display'('errinscan'(:0)) .
  620.    'nl' .
  621.    'fail' . []
  622. 'num_or_sym'(:0, 'num'('-'.:0.:1)) :
  623.    'digit'(:0) .
  624.    'getdigits'(:1) . []
  625. 'num_or_sym'(:0, 'id'('-'.:0.:1)) :
  626.    'symch'(:0) .
  627.    'getsym'(:1) . []
  628. 'num_or_sym'(_, 'id'('-'.[])) : []
  629. 'dot_or_sym'(:0, 'dot') :
  630.    '@=<'(:0, ' ') . []
  631. 'dot_or_sym'(:0, 'id'('.'.:0.:1)) :
  632.    'symch'(:0) .
  633.    'getsym'(:1) . []
  634. 'dot_or_sym'(_, 'id'('.'.[])) : []
  635. 'skipcomment' :
  636.    'lastch'(:0) .
  637.    'iseoln'(:0) .
  638.    'skipbl' .
  639.    '!' . []
  640. 'skipcomment' :
  641.    'rch' .
  642.    'skipcomment' . []
  643. 'getword'(:0.:1) :
  644.    'rdch'(:0) .
  645.    'alphanum'(:0) .
  646.    '!' .
  647.    'getword'(:1) . []
  648. 'getword'([]) : []
  649. 'getdigits'(:0.:1) :
  650.    'rdch'(:0) .
  651.    'digit'(:0) .
  652.    '!' .
  653.    'getdigits'(:1) . []
  654. 'getdigits'([]) : []
  655. 'getsym'(:0.:1) :
  656.    'rdch'(:0) .
  657.    'symch'(:0) .
  658.    '!' .
  659.    'getsym'(:1) . []
  660. 'getsym'([]) : []
  661. 'getstring'(:0, :0, :1) :
  662.    '!' .
  663.    'rdch'(:2) .
  664.    'twodelims'(:0, :2, :1) . []
  665. 'getstring'(:0, :1, :1.:2) :
  666.    'rdch'(:3) .
  667.    'getstring'(:0, :3, :2) . []
  668. 'twodelims'(:0, :0, :0.:1) :
  669.    '!' .
  670.    'rdch'(:2) .
  671.    'getstring'(:0, :2, :1) . []
  672. 'twodelims'(_, _, []) : []
  673. 'wordstart'(:0) :
  674.    'smalletter'(:0) . []
  675. 'varstart'(:0) :
  676.    'bigletter'(:0) . []
  677. 'varstart'('_') : []
  678. 'bracket'('(', 'l', '()') : []
  679. 'bracket'(')', 'r', '()') : []
  680. 'bracket'('[', 'l', '[]') : []
  681. 'bracket'(']', 'r', '[]') : []
  682. 'bracket'('{', 'l', '{}') : []
  683. 'bracket'('}', 'r', '{}') : []
  684. 'maketoken'('var'(:0), 'vns'(:1), :2) :
  685.    'makeptr'(:0, :1, :2) . []
  686. 'maketoken'('id'(:0), :1, _) :
  687.    'pname'(:2, :0) .
  688.    'make_ff_or_id'(:2, :1) . []
  689. 'maketoken'('qid'(:0), 'id'(:1), _) :
  690.    'pname'(:1, :0) . []
  691. 'maketoken'('num'('-'.:0), 'vns'(:1), _) :
  692.    'pnamei'(:2, :0) .
  693.    'sum'(:1, :2, 0) . []
  694. 'maketoken'('num'(:0), 'vns'(:1), _) :
  695.    'pnamei'(:1, :0) . []
  696. 'maketoken'('str'(:0), 'vns'(:0), _) : []
  697. 'maketoken'(:0, :0, _) : []
  698. 'makeptr'('_'.[], _, _) : []
  699. 'makeptr'(:0, :1, :2) :
  700.    'look_var'('var'(:0, :1), :2) . []
  701. 'look_var'(:0, :0.:1) : []
  702. 'look_var'(:0, _.:1) :
  703.    'look_var'(:0, :1) . []
  704. 'make_ff_or_id'(:0, 'ff'(:0, :1, :2)) :
  705.    'FF'(:0, :1, :2) . []
  706. 'make_ff_or_id'(:0, 'id'(:0)) : []
  707. 'transl_rule'(:0, :1, :2) :
  708.    'two_ok'(:0, :1) .
  709.    'isolate_lhs_t'(:0, :3, :4) .
  710.    'connect'(:4, :5, :6) .
  711.    'expand'(:3, :7, :5, :8) .
  712.    'makebody'(:1, :7, :6, :9, :10) .
  713.    'do_clause'(:9, :8, :2) . []
  714. 'do_clause'('true', :0, :0) :
  715.    '!' . []
  716. 'do_clause'(:0, :1, ':-'(:1, :0)) : []
  717. 'isolate_lhs_t'(','(:0, :1), :0, :1) :
  718.    ';'('nonvarint'(:0), 'rulerror'('varint')) .
  719.    ';'('isclosedlist'(:1), 'rulerror'('ter')) .
  720.    '!' . []
  721. 'isolate_lhs_t'(:0, :0, []) : []
  722. 'isclosedlist'(:0) :
  723.    'check'('iscll'(:0)) . []
  724. 'iscll'(:0) :
  725.    'var'(:0) .
  726.    '!' .
  727.    'fail' . []
  728. 'iscll'([]) : []
  729. 'iscll'(_.:0) :
  730.    'iscll'(:0) . []
  731. 'connect'([], :0, :0) : []
  732. 'connect'(:0.:1, :0.:2, :3) :
  733.    'connect'(:1, :2, :3) . []
  734. 'makebody'(';'(:0, :1), :2, :3, ';'(','(' dummy'(:2, :4), :5), :6), _) :
  735.    '!' .
  736.    'two_ok'(:0, :1) .
  737.    'makeright'(:0, :4, :3, :5) .
  738.    'makebody'(:1, :2, :3, :6, 'alt') . []
  739. 'makebody'(:0, :1, :2, :3, :4) :
  740.    'var'(:4) .
  741.    '!' .
  742.    'makeright'(:0, :1, :2, :3) . []
  743. 'makebody'(:0, :1, :2, ','(' dummy'(:1, :3), :4), 'alt') :
  744.    'makeright'(:0, :3, :2, :4) . []
  745. 'makeright'(','(:0, :1), :2, :3, :4) :
  746.    '!' .
  747.    'two_ok'(:0, :1) .
  748.    'transl_item'(:0, :2, :5, :6) .
  749.    'makeright'(:1, :5, :3, :7) .
  750.    'combine'(:6, :7, :4) . []
  751. 'makeright'(:0, :1, :2, :3) :
  752.    'transl_item'(:0, :1, :2, :3) . []
  753. 'combine'('true', :0, :0) :
  754.    '!' . []
  755. 'combine'(:0, 'true', :0) :
  756.    '!' . []
  757. 'combine'(:0, :1, ','(:0, :1)) : []
  758. 'transl_item'(:0, :1, :2, 'true') :
  759.    'isclosedlist'(:0) .
  760.    '!' .
  761.    'connect'(:0, :1, :2) . []
  762. 'transl_item'('!', :0, :0, '!') :
  763.    '!' . []
  764. 'transl_item'('{}'(:0), :1, :1, 'call'(:0)) :
  765.    '!' . []
  766. 'transl_item'(_._, _, _, _) :
  767.    'rulerror'('ter') . []
  768. 'transl_item'(';'(:0, :1), :2, :3, :4) :
  769.    '!' .
  770.    'makebody'(';'(:0, :1), :2, :3, :4, _) . []
  771. 'transl_item'(:0, :1, :2, :3) :
  772.    'expand'(:0, :1, :2, :3) . []
  773. 'expand'(:0, :1, :2, :3) :
  774.    '=..'(:0, :4.:5) .
  775.    '=..'(:3, :4.:1.:2.:5) . []
  776. 'two_ok'(:0, :1) :
  777.    'nonvarint'(:0) .
  778.    'nonvarint'(:1) .
  779.    '!' . []
  780. 'two_ok'(_, _) :
  781.    'rulerror'('varint') . []
  782. 'rulerror'(:0) :
  783.    'nl' .
  784.    'display'('+++ Error in this rule: ') .
  785.    'mes'(:0) .
  786.    'nl' .
  787.    'tagfail'('transl_rule'(_, _, _)) . []
  788. 'mes'('varint') :
  789.    'display'('variable or integer item.') . []
  790. 'mes'('ter') :
  791.    'display'('terminals not in a closed list.') . []
  792. 'phrase'(:0, :1) :
  793.    'nonvarint'(:0) .
  794.    '!' .
  795.    'expand'(:0, :1, [], :2) .
  796.    'call'(:2) . []
  797. 'phrase'(:0, :1) :
  798.    'error'('phrase'(:0, :1)) . []
  799. ' dummy'(:0, :0) : []
  800. '=..'(:0, :1) :
  801.    'var'(:0) .
  802.    'var'(:1) .
  803.    '!' .
  804.    'error'('=..'(:0, :1)) . []
  805. '=..'(:0, :0.[]) :
  806.    'integer'(:0) .
  807.    '!' . []
  808. '=..'(:0, :1.:2) :
  809.    'setarity'(:0, :2, :3) .
  810.    'functor'(:0, :1, :3) .
  811.    'not'('integer'(:1)) .
  812.    'setargs'(:0, :2, 0, :3) . []
  813. 'setarity'(:0, :1, :2) :
  814.    'var'(:0) .
  815.    '!' .
  816.    'length'(:1, :2) . []
  817. 'setarity'(_, _, _) : []
  818. 'setargs'(_, [], :0, :0) :
  819.    '!' . []
  820. 'setargs'(:0, :1.:2, :3, :4) :
  821.    'sum'(:3, 1, :5) .
  822.    'arg'(:5, :0, :1) .
  823.    'setargs'(:0, :2, :5, :4) . []
  824. 'length'(:0, :1) :
  825.    'length'(:0, 0, :1) . []
  826. 'length'(:0, _, _) :
  827.    'var'(:0) .
  828.    '!' .
  829.    'error'('length'(:0, _)) . []
  830. 'length'([], :0, :0) :
  831.    '!' . []
  832. 'length'(_.:0, :1, :2) :
  833.    '!' .
  834.    'sum'(:1, 1, :3) .
  835.    'length'(:0, :3, :2) . []
  836. 'length'(:0, _, _) :
  837.    'error'('length'(:0, _)) . []
  838. 'numbervars'('V'(:0), :0, :1) :
  839.    '!' .
  840.    'sum'(:0, 1, :1) . []
  841. 'numbervars'('V'(_), :0, :0) :
  842.    '!' . []
  843. 'numbervars'(:0, :1, :1) :
  844.    'integer'(:0) .
  845.    '!' . []
  846. 'numbervars'(:0, :1, :2) :
  847.    'numbervars'(:0, 1, :1, :2) . []
  848. 'numbervars'(:0, :1, :2, :3) :
  849.    'arg'(:1, :0, :4) .
  850.    '!' .
  851.    'numbervars'(:4, :2, :5) .
  852.    'sum'(:1, 1, :6) .
  853.    'numbervars'(:0, :6, :5, :3) . []
  854. 'numbervars'(_, _, :0, :0) : []
  855. : 'op'(1000, 'xfy', ',') . [] #
  856. : 'op'(1200, 'xfx', ':-') . [] #
  857. : 'op'(1200, 'fx', ':-') . [] #
  858. : 'op'(1100, 'xfy', ';') . [] #
  859. : 'op'(900, 'fy', 'not') . [] #
  860. : 'op'(700, 'xfx', '=') . [] #
  861. : 'op'(700, 'xfx', 'is') . [] #
  862. : 'op'(1200, 'xfx', '-->') . [] #
  863. : 'op'(500, 'yfx', '+') . [] #
  864. : 'op'(500, 'fx', '+') . [] #
  865. : 'op'(500, 'yfx', '-') . [] #
  866. : 'op'(500, 'fx', '-') . [] #
  867. : 'op'(400, 'yfx', '*') . [] #
  868. : 'op'(400, 'yfx', '/') . [] #
  869. : 'op'(300, 'xfx', 'mod') . [] #
  870. : 'op'(700, 'xfx', '<') . [] #
  871. : 'op'(700, 'xfx', '=<') . [] #
  872. : 'op'(700, 'xfx', '>') . [] #
  873. : 'op'(700, 'xfx', '>=') . [] #
  874. : 'op'(700, 'xfx', '=:=') . [] #
  875. : 'op'(700, 'xfx', '=\=') . [] #
  876. : 'op'(700, 'xfx', '@<') . [] #
  877. : 'op'(700, 'xfx', '@=<') . [] #
  878. : 'op'(700, 'xfx', '@>') . [] #
  879. : 'op'(700, 'xfx', '@>=') . [] #
  880. : 'op'(700, 'xfx', '=..') . [] #
  881. : 'op'(700, 'xfx', '==') . [] #
  882. : 'op'(700, 'xfx', '\==') . [] #
  883. 'binary'('yfy', 'a'(_)) : []
  884. 'binary'('xfy', 'a'('r')) : []
  885. 'binary'('yfx', 'a'('l')) : []
  886. 'binary'('xfx', 'na'(_)) : []
  887. 'unary'('fy', 'pre', 'a'('r')) : []
  888. 'unary'('fx', 'pre', 'na'('r')) : []
  889. 'unary'('yf', 'post', 'a'('l')) : []
  890. 'unary'('xf', 'post', 'na'('l')) : []
  891. 'is'(:0, :0) :
  892.    'integer'(:0) .
  893.    '!' . []
  894. 'is'(:0, '+'(:1, :2)) :
  895.    '!' .
  896.    'is'(:3, :1) .
  897.    'is'(:4, :2) .
  898.    'sum'(:3, :4, :0) . []
  899. 'is'(:0, '-'(:1, :2)) :
  900.    '!' .
  901.    'is'(:3, :1) .
  902.    'is'(:4, :2) .
  903.    'sum'(:4, :0, :3) . []
  904. 'is'(:0, '*'(:1, :2)) :
  905.    '!' .
  906.    'is'(:3, :1) .
  907.    'is'(:4, :2) .
  908.    'prod'(:3, :4, 0, :0) . []
  909. 'is'(:0, '/'(:1, :2)) :
  910.    '!' .
  911.    'is'(:3, :1) .
  912.    'is'(:4, :2) .
  913.    'prod'(:4, :0, _, :3) . []
  914. 'is'(:0, 'mod'(:1, :2)) :
  915.    '!' .
  916.    'is'(:3, :1) .
  917.    'is'(:4, :2) .
  918.    'prod'(:4, _, :0, :3) . []
  919. 'is'(:0, '+'(:1)) :
  920.    '!' .
  921.    'is'(:0, :1) . []
  922. 'is'(:0, '-'(:1)) :
  923.    '!' .
  924.    'is'(:2, :1) .
  925.    'sum'(:0, :2, 0) . []
  926. 'is'(:0, :0.[]) :
  927.    'integer'(:0) . []
  928. '=:='(:0, :1) :
  929.    'is'(:2, :0) .
  930.    'is'(:2, :1) . []
  931. '<'(:0, :1) :
  932.    'is'(:2, :0) .
  933.    'is'(:3, :1) .
  934.    'less'(:2, :3) . []
  935. '=<'(:0, :1) :
  936.    'is'(:2, :0) .
  937.    'is'(:3, :1) .
  938.    'not'('less'(:3, :2)) . []
  939. '>'(:0, :1) :
  940.    'is'(:2, :0) .
  941.    'is'(:3, :1) .
  942.    'less'(:3, :2) . []
  943. '>='(:0, :1) :
  944.    'is'(:2, :0) .
  945.    'is'(:3, :1) .
  946.    'not'('less'(:2, :3)) . []
  947. '=\='(:0, :1) :
  948.    'not'('=:='(:0, :1)) . []
  949. '=='(:0, :1) :
  950.    'var'(:0) .
  951.    'var'(:1) .
  952.    '!' .
  953.    'eqvar'(:0, :1) . []
  954. '=='(:0, :1) :
  955.    'check'('==?'(:0, :1)) . []
  956. '\=='(:0, :1) :
  957.    'not'('==?'(:0, :1)) . []
  958. '==?'(:0, :1) :
  959.    'integer'(:0) .
  960.    'integer'(:1) .
  961.    '!' .
  962.    '='(:0, :1) . []
  963. '==?'(:0, :1) :
  964.    'nonvarint'(:0) .
  965.    'nonvarint'(:1) .
  966.    'functor'(:0, :2, :3) .
  967.    'functor'(:1, :2, :3) .
  968.    'equalargs'(:0, :1, 1) . []
  969. 'equalargs'(:0, :1, :2) :
  970.    'arg'(:2, :0, :3) .
  971.    'arg'(:2, :1, :4) .
  972.    '!' .
  973.    '=='(:3, :4) .
  974.    'sum'(:2, 1, :5) .
  975.    'equalargs'(:0, :1, :5) . []
  976. 'equalargs'(_, _, _) : []
  977. 'assert'(:0) :
  978.    'asserta'(:0) . []
  979. 'asserta'(:0) :
  980.    'nonvarint'(:0) .
  981.    'convert'(:0, :1, :2) .
  982.    '!' .
  983.    'assert'(:1, :2, 0) . []
  984. 'asserta'(:0) :
  985.    'error'('asserta'(:0)) . []
  986. 'assertz'(:0) :
  987.    'nonvarint'(:0) .
  988.    'convert'(:0, :1, :2) .
  989.    '!' .
  990.    'assert'(:1, :2, 32767) . []
  991. 'assertz'(:0) :
  992.    'error'('assertz'(:0)) . []
  993. 'convert'(':-'(:0, :1), :0, :2) :
  994.    'conv_body'(:1, :2) . []
  995. 'convert'(:0, :0, []) : []
  996. 'conv_body'(:0, 'call'(:0).[]) :
  997.    'var'(:0) .
  998.    '!' . []
  999. 'conv_body'('true', []) : []
  1000. 'conv_body'(:0, :1) :
  1001.    'conv_b'(:0, :1) . []
  1002. 'conv_b'(:0, :1.[]) :
  1003.    'var'(:0) .
  1004.    '!' .
  1005.    'conv_call'(:0, :1) . []
  1006. 'conv_b'(','(:0, :1), :2.:3) :
  1007.    '!' .
  1008.    'conv_call'(:0, :2) .
  1009.    'conv_b'(:1, :3) . []
  1010. 'conv_b'(:0, :0.[]) : []
  1011. 'conv_call'(:0, 'call'(:0)) :
  1012.    'var'(:0) .
  1013.    '!' . []
  1014. 'conv_call'(:0, :0) : []
  1015. 'retract'(:0) :
  1016.    'nonvarint'(:0) .
  1017.    'convert'(:0, :1, :2) .
  1018.    '!' .
  1019.    'functor'(:1, :3, :4) .
  1020.    'remcls'(:3, :4, 1, :1, :2) . []
  1021. 'retract'(:0) :
  1022.    'error'('retract'(:0)) . []
  1023. 'remcls'(:0, :1, :2, :3, :4) :
  1024.    'clause'(:0, :1, :2, :5, :6) .
  1025.    'remcls'(:0, :1, :2, :5, :3, :6, :4) . []
  1026. 'remcls'(:0, :1, :2, :3, :3, :4, :4) :
  1027.    'retract'(:0, :1, :2) . []
  1028. 'remcls'(:0, :1, :2, :3, :4, :5, :6) :
  1029.    'check'('='(:3, :4)) .
  1030.    'check'('='(:5, :6)) .
  1031.    '!' .
  1032.    'remcls'(:0, :1, :2, :4, :6) . []
  1033. 'remcls'(:0, :1, :2, _, :3, _, :4) :
  1034.    'sum'(:2, 1, :5) .
  1035.    'remcls'(:0, :1, :5, :3, :4) . []
  1036. 'clause'(:0, :1) :
  1037.    'nonvarint'(:0) .
  1038.    '!' .
  1039.    'functor'(:0, :2, :3) .
  1040.    'gencls'(:2, :3, 1, :0, :1) . []
  1041. 'clause'(:0, :1) :
  1042.    'error'('clause'(:0, :1)) . []
  1043. 'gencls'(:0, :1, :2, :3, :4) :
  1044.    'clause'(:0, :1, :2, :5, :6) .
  1045.    'gencls'(:0, :1, :2, :5, :3, :6, :4) . []
  1046. 'gencls'(_, _, _, :0, :0, :1, :2) :
  1047.    'conv_body'(:2, :1) . []
  1048. 'gencls'(:0, :1, :2, _, :3, _, :4) :
  1049.    'sum'(:2, 1, :5) .
  1050.    'gencls'(:0, :1, :5, :3, :4) . []
  1051. 'listing' :
  1052.    'proc'(:0) .
  1053.    'listproc'(:0) .
  1054.    'nl' .
  1055.    'fail' . []
  1056. 'listing' : []
  1057. 'listing'(:0) :
  1058.    'atom'(:0) .
  1059.    '!' .
  1060.    'listbyname'(:0) . []
  1061. 'listing'('/'(:0, :1)) :
  1062.    'atom'(:0) .
  1063.    'integer'(:1) .
  1064.    '=<'(0, :1) .
  1065.    '!' .
  1066.    'functor'(:2, :0, :1) .
  1067.    'listproc'(:2) . []
  1068. 'listing'(:0) :
  1069.    'isclosedlist'(:0) .
  1070.    'listseveral'(:0) .
  1071.    '!' . []
  1072. 'listing'(:0) :
  1073.    'error'('listing'(:0)) . []
  1074. 'listseveral'([]) : []
  1075. 'listseveral'(:0.:1) :
  1076.    'listing'(:0) .
  1077.    'listseveral'(:1) . []
  1078. 'listbyname'(:0) :
  1079.    'proc'(:1) .
  1080.    'functor'(:1, :0, _) .
  1081.    'listproc'(:1) .
  1082.    'nl' .
  1083.    'fail' . []
  1084. 'listbyname'(_) : []
  1085. 'listproc'(:0) :
  1086.    'clause'(:0, :1) .
  1087.    'writeclause'(:0, :1) .
  1088.    'wch'('.') .
  1089.    'nl' .
  1090.    'fail' . []
  1091. 'listproc'(_) : []
  1092. 'writeclause'(:0, :1) :
  1093.    'not'('var'(:1)) .
  1094.    '='(:1, 'true') .
  1095.    '!' .
  1096.    'writeq'(:0) . []
  1097. 'writeclause'(:0, :1) :
  1098.    'writeq'(':-'(:0, :1)) . []
  1099. 'write'(:0) :
  1100.    'side_effects'('outterm'(:0, 'noq')) . []
  1101. 'writeq'(:0) :
  1102.    'side_effects'('outterm'(:0, 'q')) . []
  1103. 'writetext'(:0.:1) :
  1104.    '!' .
  1105.    'wch'(:0) .
  1106.    'writetext'(:1) . []
  1107. 'writetext'([]) : []
  1108. 'outterm'(:0, :1) :
  1109.    'numbervars'(:0, 1, _) .
  1110.    'outt'(:0, 'fd'(_, _), :1) . []
  1111. 'outt'(:0, _, _) :
  1112.    'var'(:0) .
  1113.    '!' .
  1114.    'wch'('_') . []
  1115. 'outt'('V'(:0), _, _) :
  1116.    'integer'(:0) .
  1117.    '!' .
  1118.    'wch'('X') .
  1119.    'display'(:0) . []
  1120. 'outt'(:0, _, _) :
  1121.    'integer'(:0) .
  1122.    'display'(:0) .
  1123.    '!' . []
  1124. 'outt'(:0, :1, :2) :
  1125.    '=..'(:0, :3.:4) .
  1126.    'outfun'(:3, :4, :1, :2) . []
  1127. 'outfun'(:0, :1, :2, :3) :
  1128.    'isfix'(:0, :1, :4, :5) .
  1129.    '!' .
  1130.    'outff'(:5, :4, :0.:1, :2, :3) . []
  1131. 'outfun'('.', :0.:1.[], _, :2) :
  1132.    '!' .
  1133.    'outlist'(:0.:1, :2) . []
  1134. 'outfun'(:0, :1, _, :2) :
  1135.    'outname'(:0, :2) .
  1136.    'outargs'(:1, :2) . []
  1137. 'isfix'(:0, _._.[], 'ff'(:1, :2), 'in') :
  1138.    'FF'(:0, :3, :1) .
  1139.    'mk_bin'(:3, :2) . []
  1140. 'isfix'(:0, _.[], 'ff'(:1, :2), :3) :
  1141.    'FF'(:0, :4, :1) .
  1142.    'mk_un'(:4, :3, :2) . []
  1143. 'mk_bin'(:0._, :1) :
  1144.    'binary'(:0, :1) . []
  1145. 'mk_un'(:0.[], :1, :2) :
  1146.    'unary'(:0, :1, :2) . []
  1147. 'mk_un'(_.:0.[], :1, :2) :
  1148.    'unary'(:0, :1, :2) . []
  1149. 'outff'(:0, :1, :2, :3, :4) :
  1150.    'agree'(:1, :3) .
  1151.    '!' .
  1152.    'outff'(:0, :1, :2, :4) . []
  1153. 'outff'(:0, :1, :2, _, :3) :
  1154.    'wch'('(') .
  1155.    'outff'(:0, :1, :2, :3) .
  1156.    'wch'(')') . []
  1157. 'agree'(_, 'fd'(:0, _)) :
  1158.    'var'(:0) . []
  1159. 'agree'('ff'(:0, _), 'fd'('ff'(:1, _), _)) :
  1160.    'stronger'(:0, :1) . []
  1161. 'agree'('ff'(:0, 'a'(:1)), 'fd'('ff'(:0, 'a'(:1)), :1)) : []
  1162. 'outff'('in', :0, :1.:2.:3.[], :4) :
  1163.    'outt'(:2, 'fd'(:0, 'l'), :4) .
  1164.    'outfn'(:1, ' ') .
  1165.    'outt'(:3, 'fd'(:0, 'r'), :4) . []
  1166. 'outff'('pre', :0, :1.:2.[], :3) :
  1167.    'outfn'(:1, ' ') .
  1168.    'outt'(:2, 'fd'(:0, 'r'), :3) . []
  1169. 'outff'('post', :0, :1.:2.[], :3) :
  1170.    'outt'(:2, 'fd'(:0, 'l'), :3) .
  1171.    'outfn'(:1, ' ') . []
  1172. 'outfn'(:0, ' ') :
  1173.    '!' .
  1174.    'wch'(' ') .
  1175.    'display'(:0) .
  1176.    'wch'(' ') . []
  1177. 'outfn'(:0, :1) :
  1178.    'wch'(:1) .
  1179.    'pname'(:0, :2) .
  1180.    'outfn1'(:2, :1) .
  1181.    'wch'(:1) . []
  1182. 'outfn1'([], _) :
  1183.    '!' . []
  1184. 'outfn1'(:0.:1, :0) :
  1185.    '!' .
  1186.    'wch'(:0) .
  1187.    'wch'(:0) .
  1188.    'outfn1'(:1, :0) . []
  1189. 'outfn1'(:0.:1, :2) :
  1190.    'wch'(:0) .
  1191.    'outfn1'(:1, :2) . []
  1192. 'outname'(:0, 'noq') :
  1193.    '!' .
  1194.    'display'(:0) . []
  1195. 'outname'(:0, 'q') :
  1196.    'FF'(:0, _, _) .
  1197.    '!' .
  1198.    'outfn'(:0, '''') . []
  1199. 'outname'(:0, 'q') :
  1200.    'pname'(:0, :1) .
  1201.    'check'('noq'(:1)) .
  1202.    '!' .
  1203.    'display'(:0) . []
  1204. 'outname'(:0, 'q') :
  1205.    'outfn'(:0, '''') . []
  1206. 'noq'(:0.:1) :
  1207.    'wordstart'(:0) .
  1208.    'isword'(:1) . []
  1209. 'noq'(:0.[]) :
  1210.    'solochar'(:0) . []
  1211. 'noq'('['.']'.[]) : []
  1212. 'noq'(:0.:1) :
  1213.    'symch'(:0) .
  1214.    'issym'(:1) . []
  1215. 'isword'([]) : []
  1216. 'isword'(:0.:1) :
  1217.    'alphanum'(:0) .
  1218.    'isword'(:1) . []
  1219. 'issym'([]) : []
  1220. 'issym'(:0.:1) :
  1221.    'symch'(:0) .
  1222.    'issym'(:1) . []
  1223. 'outargs'([], _) :
  1224.    '!' . []
  1225. 'outargs'(:0, :1) :
  1226.    'fake'(:2) .
  1227.    'wch'('(') .
  1228.    'outargs'(:0, :2, :1) .
  1229.    'wch'(')') . []
  1230. 'outargs'(:0.[], :1, :2) :
  1231.    '!' .
  1232.    'outt'(:0, :1, :2) . []
  1233. 'outargs'(:0.:1, :2, :3) :
  1234.    'outt'(:0, :2, :3) .
  1235.    'display'(', ') .
  1236.    'outargs'(:1, :2, :3) . []
  1237. 'fake'('fd'('ff'(1000, 'na'(_)), _)) : []
  1238. 'outlist'(:0.:1, :2) :
  1239.    'fake'(:3) .
  1240.    'wch'('[') .
  1241.    'outt'(:0, :3, :2) .
  1242.    'outlist'(:1, :3, :2) .
  1243.    'wch'(']') . []
  1244. 'outlist'([], _, _) :
  1245.    '!' . []
  1246. 'outlist'(:0.:1, :2, :3) :
  1247.    '!' .
  1248.    'display'(', ') .
  1249.    'outt'(:0, :2, :3) .
  1250.    'outlist'(:1, :2, :3) . []
  1251. 'outlist'(:0, :1, :2) :
  1252.    'display'(' | ') .
  1253.    'outt'(:0, :1, :2) . []
  1254. 'translate'(:0, :1) :
  1255.    'see'(:0) .
  1256.    'tell'(:1) .
  1257.    'nl' .
  1258.    'repeat' .
  1259.    'read'(:2, :3) .
  1260.    'put'(:2, :3) .
  1261.    'nl' .
  1262.    '='(:2, 'end') .
  1263.    '!' .
  1264.    'seen' .
  1265.    'told' .
  1266.    'see'('user') .
  1267.    'tell'('user') . []
  1268. 'put'(':-'(:0, :1), :2) :
  1269.    '!' .
  1270.    'puthead'(:0, :3) .
  1271.    'putbody'(:1, :3) .
  1272.    'put_varnames'(:2, :3, 0) . []
  1273. 'put'('-->'(:0, :1), :2) :
  1274.    '!' .
  1275.    'tag'('transl_rule'(:0, :1, ':-'(:3, :4))) .
  1276.    'puthead'(:3, :5) .
  1277.    'putbody'(:4, :5) .
  1278.    'put_varnames'(:2, :5, 0) . []
  1279. 'put'(':-'(:0), :1) :
  1280.    '!' .
  1281.    'putbody'(:0, :2) .
  1282.    'wch'('#') .
  1283.    'nl' .
  1284.    'put_varnames'(:1, :2, 0) .
  1285.    'once'(:0) . []
  1286. 'put'('end', _) :
  1287.    '!' .
  1288.    'putbody'('seen', _) .
  1289.    'wch'('#') .
  1290.    'nl' . []
  1291. 'put'('e r r', _) :
  1292.    '!' . []
  1293. 'put'(:0, :1) :
  1294.    'puthead'(:0, :2) .
  1295.    'putbody'('true', _) .
  1296.    'put_varnames'(:1, :2, 0) . []
  1297. 'puthead'(:0, :1) :
  1298.    'nonvarint'(:0) .
  1299.    '!' .
  1300.    'putterm'(:0, :1) . []
  1301. 'puthead'(:0, _) :
  1302.    'transl_err'(:0) . []
  1303. 'putbody'(:0, :1) :
  1304.    'punct'(':') .
  1305.    'conv_body'(:0, :2) .
  1306.    '!' .
  1307.    'putbody_c'(:2, :1) . []
  1308. 'putbody_c'([], _) :
  1309.    '!' .
  1310.    'display'([]) . []
  1311. 'putbody_c'(:0.:1, :2) :
  1312.    'not'('integer'(:0)) .
  1313.    '!' .
  1314.    'putterm'(:0, :2) .
  1315.    'punct'('.') .
  1316.    'putbody_c'(:1, :2) . []
  1317. 'putbody_c'(:0._, _) :
  1318.    'transl_err'(:0) . []
  1319. 'punct'(:0) :
  1320.    'wch'(' ') .
  1321.    'wch'(:0) .
  1322.    'nl' .
  1323.    'display'('   ') . []
  1324. 'putterm'(:0, :1) :
  1325.    'var'(:0) .
  1326.    '!' .
  1327.    'lookup'(:0, :1, -1, :2) .
  1328.    'wch'(':') .
  1329.    'display'(:2) . []
  1330. 'putterm'(:0, _) :
  1331.    'integer'(:0) .
  1332.    '!' .
  1333.    'display'(:0) . []
  1334. 'putterm'(:0.:1, :2) :
  1335.    '!' .
  1336.    'putterm_inlist'(:0, :2) .
  1337.    'display'(' . ') .
  1338.    'putterm'(:1, :2) . []
  1339. 'putterm'(:0, :1) :
  1340.    '=..'(:0, :2.:3) .
  1341.    'outfn'(:2, '''') .
  1342.    'putargs'(:3, :1) . []
  1343. 'lookup'(:0, :1, :2, :3) :
  1344.    'var'(:1) .
  1345.    '!' .
  1346.    'sum'(:2, 1, :3) .
  1347.    '='(:1, 'vn'(:0, :3).:4) . []
  1348. 'lookup'(:0, 'vn'(:1, :2)._, _, :2) :
  1349.    'eqvar'(:0, :1) .
  1350.    '!' . []
  1351. 'lookup'(:0, 'vn'(_, :1).:2, _, :3) :
  1352.    'lookup'(:0, :2, :1, :3) . []
  1353. 'putargs'([], _) :
  1354.    '!' . []
  1355. 'putargs'(:0, :1) :
  1356.    'wch'('(') .
  1357.    'putarglist'(:0, :1) .
  1358.    'wch'(')') . []
  1359. 'putarglist'(:0.[], :1) :
  1360.    '!' .
  1361.    'putterm'(:0, :1) . []
  1362. 'putarglist'(:0.:1, :2) :
  1363.    'putterm'(:0, :2) .
  1364.    'display'(', ') .
  1365.    'putarglist'(:1, :2) . []
  1366. 'putterm_inlist'(:0, :1) :
  1367.    'nonvarint'(:0) .
  1368.    '='(:0, _._) .
  1369.    '!' .
  1370.    'wch'('(') .
  1371.    'putterm'(:0, :1) .
  1372.    'wch'(')') . []
  1373. 'putterm_inlist'(:0, :1) :
  1374.    'putterm'(:0, :1) . []
  1375. 'transl_err'(:0) :
  1376.    'nl' .
  1377.    'display'('+++ Bad head or call: ') .
  1378.    'display'(:0) .
  1379.    'nl' .
  1380.    'fail' . []
  1381. 'put_varnames'(:0, :1, :2) :
  1382.    'var'(:1) .
  1383.    '!' .
  1384.    []
  1385. 'put_varnames'(:0, 'vn'(:1, :2) . :3, :4) :
  1386.    'find_varname'(:1, :0, :2, :5) .
  1387.    'nextline'(:4) .
  1388.    'wch'(' ') .
  1389.    'display'(:2) .
  1390.    'wch'(' ') .
  1391.    'writetext'(:5) .
  1392.    'wch'(',') .
  1393.    'sum'(:4, 1, :6) .
  1394.    'put_varnames'(:0, :3, :6) .
  1395.    []
  1396. 'find_varname'(:0, :1, :2, 'X' . :3) :
  1397.    'var'(:1) .
  1398.    '!' .
  1399.    'pnamei'(:2, :3) .
  1400.    []
  1401. 'find_varname'(:0, 'var'(:1, :2) . :3, :4, :1) :
  1402.    'eqvar'(:0, :2) .
  1403.    '!' .
  1404.    []
  1405. 'find_varname'(:0, :1 . :2, :3, :4) :
  1406.    'find_varname'(:0, :2, :3, :4) .
  1407.    []
  1408. 'nextline'(:0) :
  1409.    'prod'(6, _, 0, :0) .
  1410.    '!' .
  1411.    'nl' .
  1412.    'display'('   %%') . []
  1413. 'nextline'(_) : []
  1414. 'protect' :
  1415.    'proc'(:0) .
  1416.    'functor'(:0, :1, :2) .
  1417.    'protect'(:1, :2) .
  1418.    'fail' . []
  1419. 'protect' :
  1420.    'display'('All predicates protected.') .
  1421.    'nl' . []
  1422. 'unprotect' :
  1423.    'proc'(:0) .
  1424.    'functor'(:0, :1, :2) .
  1425.    'unprotect'(:1, :2) .
  1426.    'fail' . []
  1427. 'unprotect' :
  1428.    'display'('All predicates un-protected.') .
  1429.    'nl' . []
  1430. :  'grf_mse_hide' .
  1431.    'txt_mode' .
  1432.    'protect' .
  1433.    'seen' . [] #
  1434.  
  1435.